﻿
function PermiteNumeros(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[0-9]/;
    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}

function PermiteDecimales(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;
    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}

//INICIO FUNCIONES GENÉRICAS
//Validar combobox
//$(document).ready(function () {
//    $(".field_element").change(function () {//Validación: Validando combobox
//        if (this.value == "0") {
//            if (this.disabled == false) {              // condición para que no muestre el campo como obligatorio si está desabilitado 
//                this.classList.remove("field_element");
//                this.className = "field_element_oblig";
//            }
//        } else {
//            this.classList.remove("field_element_oblig");
//            this.className = "field_element";
//        }
//    });

//    $(".txt-box-campos").blur(function () {//Validación: Validando textbox
//        if (this.value == "") {
//            if (this.disabled == false) {              // condición para que no muestre el campo como obligatorio si está desabilitado 
//                this.classList.remove("txt-box-mcampos");
//                this.className = "txt-box-campos-oblig";
//            }
//        } else {
//            this.classList.remove("txt-box-campos-oblig");
//            this.className = "txt-box-campos";
//        }
//    });

//    $(".txt-box-campos").change(function () {//Validación: Validando combobox
//        if (this.value == "") {
//            if (this.disabled == false) {              // condición para que no muestre el campo como obligatorio si está desabilitado 
//                this.classList.remove("field_element");
//                this.className = "field_element_oblig";
//            }
//        } else {
//            this.classList.remove("field_element_oblig");
//            this.className = "field_element";
//        }
//    });
//});


function ValidarUnSoloCheck(poObjeto, psNombre) {//Validación: Solo un check seleccionado
    var sNombre = document.getElementsByName(psNombre);
    for (var i = 0; i < sNombre.length; i++) {
        if (poObjeto != sNombre[i]) {
            sNombre[i].checked = false;
       }
    }
}

function MostrarFecha(psIdObjeto) {//Calendario: Mostrar calendario al hacer click
    $('#' + psIdObjeto).datepicker({
        changeMonth: true,
        changeYear: true,
        onSelect: function (datatext, instr) { SeleccionarFecha(psIdObjeto); }
    }).datepicker('show');
}

function SeleccionarFecha(psIdObjeto) {//Calendario: Mostrar en los combobox las fecha seleccionada
    var sFecha = document.getElementById(psIdObjeto).value;
    sFecha = sFecha.split("/");
    document.getElementById(psIdObjeto + "_Dia").value = sFecha[0];
    document.getElementById(psIdObjeto + "_Mes").value = sFecha[1]
    document.getElementById(psIdObjeto + "_Ano").value = sFecha[2]
}

var sDia;
var sMes;
var sAno;
function NoAplicaFecha(poObjeto, psObjeto) {//Validación: No aplica fecha antigua dd/mm/yyyy
    var oDia = document.getElementById(psObjeto + "_Dia");
    var oMes = document.getElementById(psObjeto + "_Mes");
    var oAno = document.getElementById(psObjeto + "_Ano");

    var dFechaHoy = new Date();
    if (poObjeto.checked) {
        sDia = oDia.value;
        oDia.value = "0";
        oDia.disabled = true;
        sMes = oMes.value;
        oMes.value = "0";
        oMes.disabled = true;
        sAno = oAno.value;
        oAno.value = "0";
        oAno.disabled = true;
    } else {
        oDia.value = sDia;
        oDia.disabled = false;
        oMes.value = sMes;
        oMes.disabled = false;
        oAno.value = sAno;
        oAno.disabled = false;
    }
}

function NoAplica(poObjeto, psObjeto1, psObjeto2) {//Validación: No Aplica para 1 ó 2 textbox
    var sObjeto1 = document.getElementById(psObjeto1);
    var sObjeto2 = document.getElementById(psObjeto2);

    if (poObjeto.checked) {
        sObjeto1.value = "";
        sObjeto1.style.backgroundColor = "Silver";
        sObjeto1.disabled = true;
        sObjeto2.value = "";
        sObjeto2.style.backgroundColor = "Silver";
        sObjeto2.disabled = true;
    } else {
        sObjeto1.style.backgroundColor = "white";
        sObjeto1.disabled = false;
        sObjeto2.style.backgroundColor = "white";
        sObjeto2.disabled = false;
    }
}

function ValidarCheckBoxList(poObjeto) {//Validación: si los check box están marcados
    var oObjetosChk = poObjeto.getElementsByTagName("input");
    for (var i = 0; i < oObjetosChk.length; i++) {
        if (oObjetosChk[i].type == "checkbox") {
            if (oObjetosChk[i].checked)
                return true;

        }
    }
    return false;
}

function IrBoton(psAccion, psPaginaActual, psTotalPaginas, psAyuda) {//Paginación: Ir boton Primero, Anterior, Siguiente, Ultimo
    var objPaginaActual = document.getElementById(psPaginaActual);
    var objTotalPaginas = document.getElementById(psTotalPaginas);
    switch (psAccion) {
        case "P":
            objPaginaActual.value = 1;
            break;
        case "A":
            objPaginaActual.value = (parseInt(objPaginaActual.value) == 1 ? 1 : parseInt(objPaginaActual.value) - 1);
            break;
        case "S":
            objPaginaActual.value = (parseInt(objPaginaActual.value) == parseInt(objTotalPaginas.innerText.trim()) ? objTotalPaginas.innerText.trim() : parseInt(objPaginaActual.value) + 1);
            break;
        case "U":
            objPaginaActual.value = objTotalPaginas.innerText.trim();
            break;
    }
    document.getElementById(psAyuda).click();//'btnAyuda'
}

function IrPagina(piPaginaActual, psPaginaActual, psAyuda) {//Paginación: Ir a una página específica
    document.getElementById(psPaginaActual).value = piPaginaActual;
    document.getElementById(psAyuda).click();
}

function IrEnter(pEvento, psNumeroPagina, psTotalPaginas, psPaginaActual, psAyuda) {//Paginación: Ir a una página específica con un enter
    var objPagina = document.getElementById(psNumeroPagina);//'txtNumeroPagina'
    var objTotalPaginas = document.getElementById(psTotalPaginas);//'lblTotalPaginas'
    PermiteNumeros(pEvento);
    if (pEvento.keyCode == 13) {
        if (isNaN(objPagina.value.trim()) == false) {
            if (parseInt(objPagina.value) < 1) objPagina.value = 1;
            if (parseInt(objPagina.value) > parseInt(objTotalPaginas.innerText.trim())) objPagina.value = objTotalPaginas.innerText.trim();
            document.getElementById(psPaginaActual).value = objPagina.value;//'hdfPaginaActual'
            document.getElementById(psAyuda).click();//'btnAyuda'
            return false;
        }
    }
}


function IrEnterBusqueda(pEvento, psNumeroPagina, psTotalPaginas, psPaginaActual, psAyuda) {//Paginación: Ir a una página específica con un enter

    var objPagina = document.getElementById(psNumeroPagina);//'txtNumeroPagina'
    var objTotalPaginas = document.getElementById(psTotalPaginas);//'lblTotalPaginas'
    if (pEvento.keyCode == 13) {
        if (isNaN(objPagina.value.trim()) == false) {
            if (parseInt(objPagina.value) < 1) objPagina.value = 1;
            if (parseInt(objPagina.value) > parseInt(objTotalPaginas.innerText.trim())) objPagina.value = objTotalPaginas.innerText.trim();
            document.getElementById(psPaginaActual).value = objPagina.value;//'hdfPaginaActual'
            document.getElementById(psAyuda).click();//'btnAyuda'
            return false;
        }
    }
}

function AbrirModal(psWidth, psHeight, pbInline, pbiframe, psHref, pbReload) {//Modales: Abrir un modal
    if (!pbReload) {
        $.colorbox({ width: psWidth, height: psHeight, inline: pbInline, iframe: pbiframe, href: psHref });
    }
    else {
        $.colorbox({ width: psWidth, height: psHeight, inline: pbInline, iframe: pbiframe, href: psHref, onClosed: function () { document.forms[0].submit(); } });
    }
    return false;
}

function CerrarModal() {//Modales: Cerrar Modal
    $(this).colorbox.close();
    return false;
}

function LPad(psValor, piLength, psCadena) {//Ayudas: Rellena con caracteres a la izquierda
    var sValor = psValor.toString();
    if (sValor != "0") {
        for (var i = sValor.length; i < piLength; i++) {
            sValor = psCadena + sValor;
        }
    }
    return sValor;
}

function CargarCalendario(psIdObjeto) {//Calendario: Cargar los combos de fechas dd/mm/yyyy
    var dFechaHoy = new Date();
    var sDiaHoy = LPad(dFechaHoy.getDate(), 2, "0");
    var sMesHoy = LPad(dFechaHoy.getMonth() + 1, 2, "0");
    var sAnoHoy = dFechaHoy.getFullYear();
    ListarDia(psIdObjeto + "_Dia", sDiaHoy);
    ListarMes(psIdObjeto + "_Mes", sMesHoy);
    ListarAno(psIdObjeto + "_Ano", sAnoHoy);
}

function CargarCalendario(psIdObjeto, psfecha) {//Calendario: Cargar los combos de fechas dd/mm/yyyy con un valor seteado
    var fecha = psfecha.split('/');
    var sDiaHoy = LPad(fecha[0], 2, "0");
    var sMesHoy = LPad(fecha[1], 2, "0");
    var sAnoHoy = fecha[2];
    ListarDia(psIdObjeto + "_Dia", sDiaHoy);
    ListarMes(psIdObjeto + "_Mes", sMesHoy);
    ListarAno(psIdObjeto + "_Ano", sAnoHoy);
}

function ListarDia(psIdObjeto, psDiaHoy) {//Calendario: Cargar combo de Día
    var oSelect = document.getElementById(psIdObjeto);
    var sValor;
    oSelect.options.length = 0;
    oSelect.options.add(new Option("-DÍA-", "0"))
    for (var i = 1; i <= 31; i++) {
        sValor = LPad(i, 2, "0");
        oSelect.options.add(new Option(sValor, sValor))
    }
    oSelect.value = psDiaHoy;
}

function ListarMes(psIdObjeto, psMesHoy) {//Calendario: Cargar combo de Mes
    var AData = [
            { text: 'ENERO', value: '01' },
            { text: 'FEBRERO', value: '02' },
            { text: 'MARZO', value: '03' },
            { text: 'ABRIL', value: '04' },
            { text: 'MAYO', value: '05' },
            { text: 'JUNIO', value: '06' },
            { text: 'JULIO', value: '07' },
            { text: 'AGOSTO', value: '08' },
            { text: 'SEPTIEMBRE', value: '09' },
            { text: 'OCTUBRE', value: '10' },
            { text: 'NOVIEMBRE', value: '11' },
            { text: 'DICIEMBRE', value: '12' }
    ];

    var oSelect = document.getElementById(psIdObjeto);
    oSelect.options.length = 0;
    oSelect.options.add(new Option("-MES-", "0"))
    for (var i = 0; i < AData.length; i++) {
        var d = AData[i];
        oSelect.options.add(new Option(d.text, d.value))
    }
    oSelect.value = psMesHoy;
}

function ListarAno(psIdObjeto, psAnoHoy) {//Calendario: Cargar combo de Año
    var oSelect = document.getElementById(psIdObjeto);
    var sValor;
    oSelect.options.length = 0;
    oSelect.options.add(new Option("-AÑO-", "0"))
    for (var i = 1900; i <= 2050 ; i++) {
        sValor = LPad(i, 2, "0");
        oSelect.options.add(new Option(sValor, sValor))
    }
    oSelect.value = psAnoHoy;
}


function ValidaCadena(poObjeto, pbOligatorio, pbSecuencial) {
    var aCadena = poObjeto.val().trim().toUpperCase().split('');
    //Validar mínimo 3 caracteres
    if (aCadena.length < 3) {
        MostrarAlertaTXT(poObjeto, "Por favor ingrese por lo menos 3 caracteres", pbOligatorio)
        return false;
    }

    //Validar caracteres sucesivos: AAA
    var aCadena = poObjeto.val().toUpperCase().split('');
    for (var i = 0; i < (aCadena.length - 2) ; i++) {
        if ((aCadena[i] == aCadena[i + 1]) && (aCadena[i] == aCadena[i + 2])) {
            MostrarAlertaTXT(poObjeto, "No puede repetir el mismo caracter 3 veces, por favor verifique ", pbOligatorio)
            return false;
            break;
        }
    }

    if (pbSecuencial) {
        //Validar caracteres secuenciales ASC: ABC
        for (var i = 0; i < (aCadena.length - 2) ; i++) {
            if ((parseInt(aCadena[i].charCodeAt(0)) == parseInt(aCadena[i + 1].charCodeAt(0) - 1)) && (parseInt(aCadena[i].charCodeAt(0)) == parseInt(aCadena[i + 2].charCodeAt(0) - 2))) {
                MostrarAlertaTXT(poObjeto, "No puede haber caracteres secuencias 3 veces, por favor verifique ", pbOligatorio)
                return false;
                break;
            }
        }

        //Validar caracteres secuenciales DESC: CBA
        for (var i = 0; i < (aCadena.length - 2) ; i++) {
            if (((parseInt(aCadena[i].charCodeAt(0)) == parseInt(aCadena[i + 1].charCodeAt(0) + 1)) && (parseInt(aCadena[i].charCodeAt(0)) == parseInt(aCadena[i + 2].charCodeAt(0) + 2)))) {
                MostrarAlertaTXT(poObjeto, "No puede haber caracteres secuencias 3 veces, por favor verifique ", pbOligatorio)
                return false;
                break;
            }
        }
    }

    return true;
}

function MostrarAlertaTXT(poObjeto, psMensaje, pbOligatorio) {//Validación: Mostrar alerta para un TextBox
    if (pbOligatorio) {
        poObjeto.removeClass("txt-box-campos-oblig-sb");
        poObjeto.addClass("txt-box-campos-oblig-cb");
    } else {
        poObjeto.removeClass("txt-box-campos");
        poObjeto.addClass("txt-box-campos-oblig");
    }
    poObjeto.focus();
    $("#dvAlerta2").css("display", "block");
    $("#dvAlerta2").text(psMensaje);
    $("#fijo").css("height", "50px");
}

function ValidaTeclaAlfanumerica(pevent) {
    var tecla;
    if (!pevent) {
        var pevent = window.event;
    }

    if (pevent.which) {
        tecla = pevent.which;
    } else {
        tecla = pevent.keyCode;
    }

    if (tecla >= 65 && tecla <= 90) {// LETRAS MAIUSCULAS
        return true;
    } else if (tecla >= 97 && tecla <= 122) {// LETRAS MINUSCULAS
        return true;
    } else if (tecla > 47 && tecla < 58) { // numeros de 0 a 9
        return true;
    } else {
        if (tecla != 8 && tecla != 32 && tecla != 20) {//DEL SPC MAYUS/MINUS 
            return false;
        } else {
            return true;
        }
    }
}
//INICIO FUNCIONES GENÉRICAS

